﻿using JT808Protocol.Common;
using System;
using System.Collections.Generic;

namespace JT808Protocol.Models.BodyParserStrategy
{
    public class DpAvListSearch_0x9205 : IJT808Body
    {
        /// <summary>
        /// channel
        /// </summary>
        public byte Channel { get; set; }

        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime StartTime { get; set; }

        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime EndTime { get; set; }

        /// <summary>
        /// 报警标志
        /// </summary>
        public ulong AlarmFlag { get; set; }

        /// <summary>
        /// AV 资源内容
        /// 0 音视频，1 音频，2 视频，3 视频或音频
        /// </summary>
        public byte AvSourceType { get; set; }

        /// <summary>
        /// 码流类型
        /// 0 所有码流,1 主码流,2 子码流
        /// </summary>
        public byte StreamType { get; set; }

        /// <summary>
        /// 存储类型
        /// 0 所有存储器,1 主存储器，2 灾备存储器
        /// </summary>
        public byte StorageType { get; set; }

        public DpAvListSearch_0x9205()
        {
            //报警标志全设为0
            this.AlarmFlag = ulong.MinValue;
            //默认为子码流
            this.StreamType = 2;
            //存储器默认为所有
            StreamType = 0;
        }

        public override IJT808Body ReadBody(ReadOnlySpan<byte> data, ref int index)
        {
            throw new NotImplementedException();
        }

        public override List<byte> WriteToBytes()
        {
            List<byte> bytes = new List<byte>();

            // 所有通道
            bytes.Add(Channel);

            // 开始时间
            bytes.AddRange(ParseHelper.DatetimeToBCD(StartTime));

            // 结束时间
            bytes.AddRange(ParseHelper.DatetimeToBCD(EndTime));

            // 报警标志
            bytes.AddRange(ParseHelper.Bytes(AlarmFlag));

            // 音视频资源类型
            bytes.Add(AvSourceType);

            // 码流类型
            bytes.Add(StreamType);

            // 存储器类型
            bytes.Add(StorageType);

            return bytes;
        }
    }
}